Unreal Version 224 Release Notes
Useful Information
Known Issues
- If you enable "Advanced Options / Audio / Use3DHardware" through the menus and
you have a 3D sound card with Aureal A3D 2.0 drivers, you won't get any sound
acceleration. A3D 2.0 (geometric environmental audio processing) support is still in
development and testing, and will come later, but the temporary side effect is that 1.0
support is disabled.
- When the The Internet server browser (Multiplayer / Join Game), the frame rate is fairly
slow in the software renderer and on 3dfx Voodoo1 class cards, causing mouse movement to
be unusually slow.
- There are still Visual Basic runtime issues with UnrealEd, where certain combinations of
system DLL's and OCX's cause UnrealEd.exe to refuse to launch, or to crash under certain
conditions in response to the user interface.
- NEC PowerVR support is not functioning in this version. Please use the software
renderer for now.
Fixes and Improvements
General
- Fixed new problem in 220 where users who had performed a partial install of Unreal (with
maps kept on the CD) didn't see any maps listed in the Deathmatch/BotMatch menus.
- "FOV #" command now takes effect permanently.
- Minigun and stinger sounds are now properly replicated to all clients.
- Botmatch skill bug in 220 fixed.
- Lookspring fixed.
- Kevlar vest pickup sound and dead guy in Vortex Rikers sound fixed.
- Bubbles now float properly on clients.
- Fixed projectiles not appearing on client side because local player ran into them.
- Carcasses are now simulated for smoother death animations, and all the nali and skaarj
gibs are properly replicated.
- Fixed bug where quick taps of fire button didn't register in network games.
- Slightly reduced damage multiplier in Hardcore mode (150% instead of 170%), and rocket
damage radius in Classic mode is back to the old value.
- Fixed razorjack sound crash problem with 3D sound.
- Fixed problem where the editor light torches were showing up in some levels in network
play.
- Fixed client prediction going through portals.
- Eliminated menu bar when playing in windowed mode.
- Fixed inability to join a network game while you are running a non-dedicated server.
Video
- Fixed menu bar disappearing when switching from Glide to the software renderer.
- Fixed potential crash while taking screenshots on 3dfx.
- Works properly on Voodoo3. Voodoo3 support was broken in Unreal 209 through 220.
- Supports compressed S3TC textures (though there aren't any in Unreal 1).
OpenGL Beta Driver
- New, rewritten OpenGL driver.
- Works quite well on the Riva TNT. Important: you need the latest TNT Detonator drivers
from NVidia's web site for this to work.
- Other cards are in the early testing phase now. Don't expect a lot. We can't provide
support for getting Unreal OpenGL running on other cards or answer questions about them at
this time.
Networking
- Fixed remote administration (didn't accept password).
- Fixed administrator "Kick <playername>" crash.
- Fixed dedicated server potential crash when player limit is reached.
- Added "userini=<inifilename>" command-line parameter to set user
configuration file.
- Added server-side demo recording - currently in alpha state. You can record demos in
botmatch or on a dedicated or non-dedicated server. Demos can be played back from any
perspective. To record a demo, type DEMOREC filename at the console. Stop recording
or playback with the STOPDEMO command. DEMOPLAY filename will play back the
demo.
- The Unreal Server Browser (UBrowser) is included, and is available under Join Game in
the Multiplayer menu.
Scripting
- Fixed "Unreal -make" lockup with class names over 32 characters.
- The new keyword "native" is now synonymous with "intrinsic", and the
Unreal 1 scripts have been updated to reflect this.
- In network play, on the client side, static functions are always called locally and
never sent across the network, regardless of the calling actor's replication statements.
- Fixed compiler logic error which caused bool variables within structs to appear to
always be zero.
- Removing "abstract" keyword from a class and recompiling now works.
- Player classes with no mesh no longer hard-coded to use name "Spectator" in
mesh menu. Instead, the pawn MenuName attribute is used as the string representation
for all playerpawn classes.
- All strings are now dynamically sized, meaning there is no longer any limit to their
length. Declaring strings with the syntax "string[255]" is now obsolete;
just use "string".
- The Chr() function converts generates a one-character string whose first character is
the ASCII/Unicode value you specify. Exception: Chr(0) returns a zero-length string.
- The Asc() function returns the ASCII/Unicode character code of the first character of
the string you specify, or 0 if the string is empty.
- New array<type> construct for defining dynamically sizable arrays. This is
only implemented for configuration loading and C++ access; dynamic arrays aren't
accessible by script yet.
- Fixed broken EDITACTOR console command.
- Actor class now contains MultiSkins array enabling multiple skins to be applied to
meshes. Not used in any Unreal 1 classes, though. Will be exploited in Unreal Tournament.
- New string concatenation operator "@" concatenates two strings (like
"$") but adds a space between them (unlike "$").
- Actors were previously being ticked (updated) two times between initial spawn and
rendering. Now they are only ticked once.
- Improved "OBJ REFS" console command not only shows who references the
specified object, but also shows the shortest reference path from the "root set"
to the object, so you can see why the object isn't being garbage collected. Very useful
for tracking down extraneous objects in order to reduce memory usage.
Installer
- Reduced virtual memory usage (was unreasonably high).
- Progress window is now updated as the patch installs.
- New standalone installer.
- Supports selectable groups.
- Supports partial installation.
- Supports mod installation.
- Supports mod uninstallation.
C++ General Changes
- Changed "INTRINSIC" macro to "DECLARE_FUNCTION", and
"AUTOREGISTER_INTRINSIC" to "IMPLEMENT_FUNCTION" (to follow the
convention set by DECLARE_CLASS and IMPLEMENT_CLASS).
- Changed all occurances of "intrinsic" to "native" (moving toward the
Java convention).
- Moved FBitReader, FBitWriter archives to Core.
- Improved generality of appCeilLogTwo.
- Command-line compiler is now invoked with "ucc make" rather than the old
"unreal -make". This is now a non-windowed, command-line application. You can
run it as an external tool through Visual C++, and direct the outputs to the results
window. This is the preferred mode of operation, because the compiler now outputs error
messages in Visual C++'s standard error format, enabling you to double-click on the error
message in the VC++ IDE and jump right to the error.
- The compiler now generates warnings when you do things that are dangerous but non-fatal,
for example using "#exec" commands to import non-existant files.
- All UnrealScript strings are now represented internally as FString structures, which
manage dynamic, variable-length, infinitey-expandable strings. This impacts all
auto-generated C++ headers such as EngineClasses.h.
- Static functions are always called in network play, regardless of their replication and
simulatedness.
- Warning: Strings greater than approximately 400 characters won't be replicated in
network play. They won't fit in packets.
- UnrealScript interpretter has been modified, improved, and optimized to handle data
types which need to be dynamically constructed and destructed on the stack frame, such as
dynamic strings (now) and dynamic arrays (coming later).
- Improved and generalized TMap, a template for mapping arbitrary keys to arbitrary
values. Considering exposing to UnrealScript later.
- appAlloca works like the ANSI C alloca. Useful for allocating temporary memory on stack.
- New data compression infrastructure is under development in FCodec.h.
- New UCommandlet base class for exposing new "command line applets" through
ucc.exe. UCommandlet supports both C++ classes (see FCommandletMake for example) and
UnrealScript classes (see CommandletHelloWorld.uc for example). Read the comments in
CommandletHelloWorld.uc for information about how to implement these.
- "ucc master" master disk builder (not yet documented).
- Localized installer/uninstaller.
- Improved and generalized "texture detail" options. When importing
textures with "#exec texture import...", the new LODSET= option specifies which
detail set the texture should belong to: 0=always render at its highest detail, 1=render
with user's "world detail" setting, 2=render with user's "skin detail"
setting.
- Meshes now support full level-of-detail rendering; see the Level of Detail
Technology page for info.
- New TrueType font importing support.
- Improved and generalized UFactory/UExporter object importing and exporting; not
currently being used for much, but will be a centerpiece of the upcoming UnrealEd rewrite.
- File management is now handled 100% through the GFileManager object; file reading and
writing now is done through FArchive objects returned by FFileManager::CreateFileReader
and FFileManager::CreateFileWriter. The old appFopen, appFclose, etc functions have
been eliminated. This extends Unreal's file reading and writing in a very general
way; now all operations dealing with internal and external storage use the same interface,
making modules more interchangable. Going 100% with this approach could be a painful
upgrade for code which is very external file-intensive, but you can always #include
<stdio.h> and use the ANSI file functions if pressed for time.
C++ Unicode Changes
- All the C++ code now compiles under Unicode by default.
- ANSICHAR=8-bit signed ANSI character.
- UNICHAR=16-bit unsigned Unicode character.
- TCHAR=Either ANSICHAR or UNICHAR depending on compile options; currently always UNICHAR.
- All of the Visual C++ projects define UNICODE and _UNICODE.
- Since Windows 95/98 do not support most of the Windows API Unicode entry points, there
are a lot of checks of the variable GUnicodeOS which is 0 when running the Unicode version
of Unreal on a non-Unicode OS like Windows 95/98. There are also macros like TCHAR_CALL_OS
which calll the appropriate ANSI/Unicode function depending on OS support.
- ATcpLink and AUdpLink text exchange functions use ANSI text exclusively.
UnrealScript Windowing System (UWindow)
- The UWindow windowing system is included.
- The UBrowser (Unreal Server Browser) provides a good example of how to use the UWindow
classes, should mod-makers be interested in the UT user interface system.
Unreal Server Browser
- UBrowser filters servers into various pages based on gametype, and compatibility with
224. While the majority of servers are of older versions of Unreal, it might take 30
seconds before you see any servers listed in the 224 or gametype-specific tabs. Check the
"All Servers" tab to see all servers including incompatible older versions of
Unreal.
- Press your F5 key to refresh the server list, or right click and choose
"Refresh".
- You can disable the Unreal server browser and use the old multiplayer menus by
commenting editing your Unreal.ini and removing the semicolon at in the line which reads
";Console=Engine.Console", and adding a semicolon in the front of the line which
reads "Console=UBrowser.UBrowserConsole".
- You can configure which tabs appear on the server browser (and what they contain) by
editing your Unreal.ini. The [UBrowser.UBrowserMainClientWindow] section contains all the
parameters which describe what appears in which tab.
- To change the number of servers which are pinged simultaneously from the default of 10,
add an entry in Unreal.ini like the following:
- [UBrowser.UBrowserServerList]
- MaxSimultaneousPing=5
End